"""
网格路径

从一个2×2方阵的左上角出发，只允许向右或向下移动，则恰好有6条通往右下角的路径。

对于20×20方阵来说，这样的路径有几条。
"""

def c(m,n):
    m=m*2
    p1=p2=1
    for i in range(m,m-n,-1):
        p1*=i
    for j in range(2,n+1):
        p2*=j
    return int(p1/p2)
print(c(20,20))




# hu=list(range(1,22))
# hh=[]
# i=0
# while i<21:
#     hh.append(hu[:])
#     i+=1
# for j in range(0,21):
#     hh[0][j]=1  
# for ii in range(0,20):
#     for ji in range(0,20):
#         hh[ii+1][ji+1]=hh[ii][ji+1]+hh[ii+1][ji]
# print(hh[20][20])
# 答案：137846528820